package com.sugon.service;

import com.alibaba.fastjson.JSONArray;
import com.sugon.entity.DevMaintenPlanEntity;
import com.sugon.entity.MaintainPlanChangeEntity;
import com.sugon.entity.MaintainPlanEntity;

import java.util.List;
import java.util.Map;

/**
 * 维护计划Service接口
 *
 * @author sugon
 * @date 2019-08-07 14:02:42
 */
public interface MaintainPlanService {

    /**
     * 根据主键查询实体
     *
     * @param id 主键
     * @return 实体
     */
    MaintainPlanEntity queryObject(String id);

    /**
     * 分页查询
     *
     * @param map 参数
     * @return list
     */
    List<MaintainPlanEntity> queryList(Map<String, Object> map);

    /**
     * 分页统计总数
     *
     * @param map 参数
     * @return 总数
     */
    int queryTotal(Map<String, Object> map);

    /**
     * 保存实体
     *
     * @param maintainPlan 实体
     * @return 保存条数
     */
    int save(MaintainPlanEntity maintainPlan);

    /**
     * 保存api
     *
     * @param maintainPlan 实体
     * @return 保存条数
     */
    int saveApi(MaintainPlanEntity maintainPlan, String userId);

    /**
     * 根据主键更新实体
     *
     * @param maintainPlan 实体
     * @return 更新条数
     */
    int update(MaintainPlanEntity maintainPlan);

    /**
     * 根据主键删除
     *
     * @param id
     * @return 删除条数
     */
    int delete(String id);

    /**
     * 根据主键批量删除
     *
     * @param ids
     * @return 删除条数
     */
    int deleteBatch(String[] ids);

    /**
     * 插入实体
     *
     * @param maintainPlanEntity
     * @return 插入条数
     */
    Integer insertMaintain(MaintainPlanEntity maintainPlanEntity, String devId);

    List<Map<String, Object>> selectModulMaintian(String id);

    /**
     * 新增计划评审
     *
     * @param id
     * @param review
     * @return
     */
    Integer updatePlanReview(String id, String review);


    List<Map<String, Object>> queryDeptPerson();

    /**
     * 维护技术人员分派
     *
     * @param maintainPlanEntity
     * @return
     */
    Integer updatePlan(MaintainPlanEntity maintainPlanEntity, JSONArray personJson);

    Integer delPlanPerson(JSONArray planId);

    List<Map<String, Object>> allDevPlan(String id);

    Integer upStartDate(String id);

    Integer insertRecord(String rId, String pId, String carriedDate, String carriedName);

    Integer insertPlanChange(MaintainPlanChangeEntity changeEntity);

    Integer countPlanChange(String id);

    List<MaintainPlanChangeEntity> reviewPlanChange();

    Integer turnDownPlanChange(MaintainPlanChangeEntity changeEntity);

    Integer upExecutive(String id, String pid);

    String endPlan(String id);

    /**
     * 定时执行器自动执行
     *
     * @param maintainPlanEntity
     * @return
     */
    int autoSave(MaintainPlanEntity maintainPlanEntity, List<DevMaintenPlanEntity> devPlanList);

    /**
     * pe审批
     */
    int apply(MaintainPlanEntity maintainPlanEntity);

    /**
     * 详情查询
     *
     * @param map 参数
     * @return list
     */
    List<Map<String, Object>> getDetailsInfo(Map<String, Object> map);

    /**
     * 详情查询分页
     *
     * @param map 参数
     * @return list
     */
    int queryDetailsTotal(Map<String, Object> map);

    List<MaintainPlanEntity> getNotEndPlan();

}
